home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Borland Visual dBASE Professiona v7.0 / DATA1.CAB / Sample_dBASE / Mugs / Finder.wfm < prev    next >
Text File  |  1997-11-20  |  9KB  |  339 lines

  1. //--------------------------------------------------------------
  2. //
  3. //  Finder.wfm - Mugs Sample Application
  4. //
  5. //  This is a general purpose locate dialog that
  6. //  searches a given rowset for a value contained 
  7. //  in a single field.
  8. //  
  9. //  Dependencies: Requires an active rowset to
  10. //                perform searches.
  11. //
  12. //  Visual dBASE Samples Group
  13. //
  14. //  $Revision:   1.6  $
  15. //
  16. //  Copyright (c) 1997, Borland International, Inc. 
  17. //  All rights reserved.
  18. //
  19. //---------------------------------------------------------------
  20.  
  21. SET TALK OFF
  22. ** END HEADER -- do not remove this line
  23. //
  24. // Generated on 10/23/97
  25. //
  26. parameter bModal
  27. local f
  28. f = new FinderFORM()
  29. if (bModal)
  30.    f.mdi = false // ensure not MDI
  31.    f.readModal()
  32. else
  33.    f.open()
  34. endif
  35.  
  36. class FinderFORM of FORM
  37.    with (this)
  38.       open = class::FORM_READMODAL
  39.       readModal = class::FORM_READMODAL
  40.       autoCenter = true
  41.       scaleFontSize = 8
  42.       scaleFontBold = false
  43.       height = 15.4091
  44.       left = 20.1429
  45.       top = 1.8182
  46.       width = 47.2857
  47.       text = "Locate Row"
  48.       mdi = false
  49.       icon = "resource #8220"
  50.    endwith
  51.  
  52.  
  53.    this.LABELWHAT = new TEXT(this)
  54.    with (this.LABELWHAT)
  55.       height = 1
  56.       left = 1
  57.       top = 1
  58.       width = 12
  59.       metric = 0
  60.       colorNormal = "BtnText"
  61.       fontName = "MS Sans Serif"
  62.       fontSize = 8
  63.       text = "Find What:"
  64.    endwith
  65.  
  66.  
  67.    this.ENTRYFIND = new ENTRYFIELD(this)
  68.    with (this.ENTRYFIND)
  69.       height = 1
  70.       left = 1
  71.       top = 2
  72.       width = 27
  73.       metric = 0
  74.       colorHighLight = ""
  75.       fontName = "MS Sans Serif"
  76.       fontSize = 8
  77.       value = ""
  78.       borderStyle = 7
  79.    endwith
  80.  
  81.  
  82.    this.SPINFIND = new SPINBOX(this)
  83.    with (this.SPINFIND)
  84.       visible = false
  85.       height = 1
  86.       left = 1
  87.       top = 2
  88.       width = 27
  89.       metric = 0
  90.       picture = "999999999999999999999"
  91.       colorHighLight = ""
  92.       rangeMax = 100
  93.       rangeMin = 1
  94.       fontName = "MS Sans Serif"
  95.       fontSize = 8
  96.       value = 1
  97.       validRequired = true
  98.       borderStyle = 7
  99.    endwith
  100.  
  101.  
  102.    this.LABELFIELD = new TEXT(this)
  103.    with (this.LABELFIELD)
  104.       height = 1
  105.       left = 1
  106.       top = 3.5
  107.       width = 16
  108.       metric = 0
  109.       colorNormal = "BtnText"
  110.       alignVertical = 1
  111.       fontName = "MS Sans Serif"
  112.       fontSize = 8
  113.       text = "Within Field:"
  114.    endwith
  115.  
  116.  
  117.    this.LISTFIELDS = new LISTBOX(this)
  118.    with (this.LISTFIELDS)
  119.       onSelChange = class::LISTFIELDS_ONSELCHANGE
  120.       onOpen = {;this.curSel := 1}
  121.       height = 6
  122.       left = 1
  123.       top = 4.5
  124.       width = 27
  125.       metric = 0
  126.       id = 101
  127.       fontName = "MS Sans Serif"
  128.       fontSize = 8
  129.       colorHighLight = "HighLightText/HighLight"
  130.    endwith
  131.  
  132.  
  133.    this.RECTANGLE1 = new RECTANGLE(this)
  134.    with (this.RECTANGLE1)
  135.       left = 1
  136.       top = 11
  137.       width = 45
  138.       height = 3.5
  139.       metric = 0
  140.       text = "Search Rules"
  141.       colorNormal = "WindowText/BtnFace"
  142.       fontName = "MS Sans Serif"
  143.       fontSize = 8
  144.    endwith
  145.  
  146.  
  147.    this.CHECKCASE = new CHECKBOX(this)
  148.    with (this.CHECKCASE)
  149.       transparent = false
  150.       height = 1
  151.       left = 27
  152.       top = 12
  153.       width = 18
  154.       text = "Match &Case"
  155.       metric = 0
  156.       colorNormal = "WindowText/BtnFace"
  157.       fontName = "MS Sans Serif"
  158.       fontSize = 8
  159.       value = false
  160.       group = true
  161.    endwith
  162.  
  163.  
  164.    this.CHECKSHOW = new CHECKBOX(this)
  165.    with (this.CHECKSHOW)
  166.       transparent = false
  167.       height = 1
  168.       left = 27
  169.       top = 13
  170.       width = 18
  171.       text = "Show E&xpression"
  172.       metric = 0
  173.       colorNormal = "WindowText/BtnFace"
  174.       fontName = "MS Sans Serif"
  175.       fontSize = 8
  176.       value = false
  177.       group = true
  178.    endwith
  179.  
  180.  
  181.    this.BUTTONFIND = new PUSHBUTTON(this)
  182.    with (this.BUTTONFIND)
  183.       onClick = class::BUTTONFIND_ONCLICK
  184.       height = 1.1818
  185.       left = 32
  186.       top = 1.5
  187.       width = 12
  188.       text = "&Find"
  189.       metric = 0
  190.       fontName = "MS Sans Serif"
  191.       fontSize = 8
  192.       group = true
  193.       colorNormal = "BtnText/BtnFace"
  194.       value = false
  195.    endwith
  196.  
  197.  
  198.    this.BUTTONCLOSE = new PUSHBUTTON(this)
  199.    with (this.BUTTONCLOSE)
  200.       onClick = {; this.form.close()}
  201.       height = 1.1818
  202.       left = 32
  203.       top = 3.5
  204.       width = 12
  205.       text = "Close"
  206.       metric = 0
  207.       fontName = "MS Sans Serif"
  208.       fontSize = 8
  209.       group = true
  210.       colorNormal = "BtnText/BtnFace"
  211.       value = false
  212.    endwith
  213.  
  214.  
  215.    this.COMBOMATCH = new COMBOBOX(this)
  216.    with (this.COMBOMATCH)
  217.       onOpen = {; this.value := "Start of Field"}
  218.       height = 1.1
  219.       left = 10
  220.       top = 12.5
  221.       width = 15
  222.       metric = 0
  223.       fontName = "MS Sans Serif"
  224.       fontSize = 8
  225.       dataSource = 'array {"Whole Field","Start of Field"}'
  226.       style = 2
  227.    endwith
  228.  
  229.  
  230.    this.LABELMATCH = new TEXT(this)
  231.    with (this.LABELMATCH)
  232.       height = 1
  233.       left = 2
  234.       top = 12.5
  235.       width = 6
  236.       metric = 0
  237.       colorNormal = "BtnText"
  238.       alignVertical = 1
  239.       fontName = "MS Sans Serif"
  240.       fontSize = 8
  241.       text = "Match:"
  242.    endwith
  243.  
  244.  
  245.    // {Linked Method} form.readModal
  246.    function Form_ReadModal
  247.       local bRead, rowFields
  248.       bRead = false
  249.       if ( NOT TYPE("this.rowset") == "O" )
  250.          MSGBOX("No rowset to search")       
  251.       else
  252.          rowFields = this.rowset.fields
  253.          this.listFields.options = new Array()
  254.          for i = 1 to rowFields.size
  255.              if ( rowFields[i].type == "CHARACTER" OR ;
  256.                   rowFields[i].type == "AUTOINC"   OR ;
  257.                   rowFields[i].type == "NUMERIC"   OR ;
  258.                   rowFields[i].type == "LONG" )
  259.                 if ( rowFields[i].lookupSQL == "" )
  260.                    this.listFields.options.add( rowFields[i].fieldName )
  261.                 endif
  262.              endif
  263.          next
  264.          this.listFields.options.sort()
  265.          with ( this.ListFields )
  266.               dataSource := "ARRAY FORM.LISTFIELDS.options"
  267.               curSel := 1
  268.          endwith
  269.          bRead := FINDERFORM::ReadModal()
  270.       endif     
  271.    return ( bRead )
  272.  
  273.    // {Linked Method} form.buttonfind.onClick
  274.    function BUTTONFIND_OnClick
  275.       local thisRow, thisField, mBookmark, sSearchExp
  276.       local bString, bFound
  277.       thisRow    = this.form.rowset
  278.       thisField  = thisRow.fields[this.form.LISTFIELDS.value]
  279.       bString    = ( thisField.type == "CHARACTER" )
  280.       bFound     = false
  281.       mBookmark  = thisRow.bookmark()
  282.       sSearchExp = ""
  283.       if ( bString )
  284.          do case
  285.             case ( this.form.CheckCase.value AND ;
  286.                    this.form.ComboMatch.value == "Whole Field" )
  287.                  thisRow.locateOptions := 0 // exact and case
  288.             case ( this.form.CheckCase.value )
  289.                  thisRow.locateOptions := 1 // non-exact - match case
  290.             case ( this.form.ComboMatch.value == "Whole Field" )
  291.                  thisRow.locateOptions := 2 // exact - ignore case
  292.             otherwise
  293.                  thisRow.locateOptions := 3 // non-exact - ignore case
  294.          endcase
  295.          sSearchExp := '"' + this.form.listFields.value + '" = ' + ;
  296.            "'" + LTRIM(RTRIM(this.form.entryFind.value)) + "'" 
  297.       else
  298.          sSearchExp := '"' + this.form.listFields.value + '" = ' + ;
  299.              LTRIM(STR(this.form.spinFind.value))
  300.       endif
  301.  
  302.       if ( this.form.checkshow.value )
  303.          MSGBOX( sSearchExp,'SQL search expression')
  304.          this.form.setFocus()
  305.       endif
  306.       try 
  307.          bFound := thisRow.applyLocate( sSearchExp )      
  308.          if ( NOT bFound )
  309.             MSGBOX('Value was not found.','Alert', 48)
  310.             thisRow.goto( mBookmark )
  311.          endif
  312.       catch ( Exception e )
  313.           bFound := false
  314.           thisRow.goto( mBookmark )
  315.           MSGBOX('Could not perform locate.','Alert', 48)
  316.       endtry
  317.       if ( bFound )
  318.          this.form.close()
  319.       endif
  320.  
  321.    return ( bFound )
  322.    
  323.  
  324.    // {Linked Method} form.listfields.onSelChange
  325.    function LISTFIELDS_OnSelChange
  326.       local bString, rowFields
  327.       rowFields = this.form.rowset.fields
  328.  
  329.       bString = ( rowFields[this.value].type == "CHARACTER" or ;
  330.                   rowFields[this.value].type == "MEMO" )
  331.       with ( this.form ) 
  332.          entryFind.visible  := bString      
  333.          comboMatch.enabled := bString
  334.          checkCase.enabled  := bString
  335.          spinFind.visible   := ( NOT bString )
  336.       endwith
  337.    return ( bString )
  338. endclass
  339.